Grundkurs SQL

2.3  Die Grundform mit WHERE

Gleichzeitige Abfragen von zwei Tabellen

Das eben beschriebene Verfahren wollen wir nun an unseren Tabellen mit Hilfe von SQL-Anweisungen nachvollziehen. Schließlich macht der Computer genau das Gleiche. Der wichtigste Teil ist der Vergleich der in Beziehung stehenden (verbundenen) Spalten. Vergleichen kann man mit einer Bedingung, wie wir aus der ersten Lektion gelernt haben:
  WHERE Tabelle1.Primärschlüssel = Tabelle2.Fremdschlüssel

Für unsere Aufgabe müssen wir in diesen Ausdruck unsere Tabellennamen und die beiden Attribute, die miteinander in Beziehung stehen, einsetzen:
  WHERE tbl_abteilung.abteilung_ID = tbl_mitarbeiter.abteilung_ID

Relevant für das Ergebnis der Abfrage sind nur der Name des Mitarbeiters, sein Abteilungsname und das Arbeitsgebiet der Abteilung. Wir schreiben also in die erste Zeile:
  SELECT name, abteilungsname, abteilung_aufgabengebiet

Natürlich können wir auch hier die Tabellennamen voranstellen (z.B. tbl_mitarbeiter.name), es ist aber nicht nötig, da die Bezeichnung jedes Attributs zwischen beiden Tabellen eindeutig ist.

Jetzt müssen wir in der Abfrage noch sagen, welche Tabellen wir ansehen (also verbinden) möchten. Das geht natürlich mit
  FROM tbl_abteilung, tbl_mitarbeiter.

 

Unsere SQL-Abfrage hat nun die Form:

SELECT name, abteilungsname, abteilung_aufgabengebiet
FROM   tbl_abteilung, tbl_mitarbeiter
WHERE  tbl_abteilung.abteilung_ID = tbl_mitarbeiter.abteilung_ID

Wir führen die Abfrage aus und sehen: Ja, was wohl? Das sollten Sie nun selbst herausfinden – durch Überlegen oder durch Ausprobieren. Ein mögliches Ergebnis können Sie sich hier ansehen: Abfrage ausführen 

Wir wollen unsere Abfrage nun etwas verändern. Entfernen Sie die WHERE-Zeile, am Besten durch Ausschneiden – wir brauchen Sie gleich wieder. Was wird nun passieren wenn wir die Abfrage erneut ausführen? Abfrage ausführen 

Wir haben keinen Vergleich in unserer Abfrage. Es fehlt also das verbindende Attribut. Wir sehen also nicht in der Spalte abteilung_id nach und wissen nicht, welche Abteilung zu welchem Mitarbeiter gehört. Trotzdem wollen wir die gewünschten Datensätze aus beiden Tabellen angezeigt bekommen. Sie müssen diese Abfrage nicht ausführen. Das Ergebnis ist nicht etwa leer, sondern eine Kombination jedes Mitarbeiters mit jeder Abteilung. Das ist sogar mit unseren kleinen Tabellen schon eine ganze Menge. Man nennt diese Kombination auch Kreuzprodukt.

In dem folgendem Bild soll das Kreuzprodukt von Tabellen einmal visuell für Sie dargestellt werden: